package com.ucar.train.service;

import com.ucar.train.dto.Group;
import com.ucar.train.dto.UserGroup;
import com.ucar.train.dto.UserRole;
import org.apache.ibatis.annotations.Param;
import java.util.List;

public interface GroupService {

    /**
     * 保存组信息
     * @param group
     * @return
     */
    Integer saveGroup(Group group);

    /**
     * 修改组信息
     * @param group
     * @return
     */
    Integer updateGroup(Group group);

    /**
     * 查询一条组信息
     * @param id
     * @return
     */
    Group getGroup(Long id);

    /**
     * 查询所有组信息
     * @return
     */
    List<Group> listGroups();

    /**
     * 删除组
     * @param id
     * @return
     */
    Integer deleteGroup(Long id);

    /**
     *添加用户到组
     * @param userGroup
     * @return
     */
    Integer saveUserGroup(UserGroup userGroup);

    /**
     * 将用户从组中移除
     * @param id 用户id
     * @return
     */
    Integer deleteUserGroup(@Param("id") Long id);

    /**
     * 查询所有用户组关系
     * @return
     */
    List<UserGroup> listUserGroups();

    /**
     * 保存用户角色信息
     * @param userRole
     * @return
     */
    Integer saveUserRole(UserRole userRole);

    /**
     * 删除一条用户角色信息
     * @param id
     * @return
     */
    Integer deleteUserRole(@Param("id") Long id);

    /**
     * 更新用户角色
     * @param userRole
     * @return
     */
    Integer updateUserRole(@Param("userRole") UserRole userRole);

    /**
     * 获取一条用户组信息
     * @param id
     * @return
     */
    UserRole getUserRole(@Param("id") Long id);

    /**
     * 查询所有用户角色信息
     * @return
     */
    List<UserRole> listUserRoles();

    /**
     * 查询组中用户角色信息
     * @param id 组id
     * @return
     */
    List<UserRole> listUserRolesByGroup(Long id);

}
